﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//int main()
//{
//	int age = 0;
//	scanf("%d", &age);
//	if (age < 18)
//	{
//		printf("少年\n");
//	}
//	else if (age >= 18 && age <= 44)
//	{
//		printf("青年\n");
//	}
//	else if (age >= 45 && age <= 59)
//	{
//		printf("中老年\n");
//	}
//	else 
//	{
//		printf("老年\n");
//	}
//	return 0;
//}
//一维数组的存储，连续存储的从地址从小到大
//int main()
//{
//	int a[10] = { 0 };
//	int i = 0;
//	for (i = 0;i < 10;i++)
//	{
//		printf("%p\n", &a[i]);//%p是专门打印地址的
//	}
//	return 0;
//}
//二维数组
//int main()
//{
//	int a[3][3] = { 0 };
//	int i = 0;
//	for (i = 0;i < 3;i++)
//	{
//		int j = 0;
//		for (j = 0;j < 3;j++)
//		{
//			printf("&a[%d][%d]=%p\n",i,j, &a[i][j]);//按行连续存储的
//		}
//	}
//	return 0;
//}
//多个字符从两端移动，向中间汇聚
//#include<string.h>
//int main()
//{
//	char a[] = { "hello bite" };
//	char b[] = { "##########" };
//	int left = 0;
//	int right = strlen(a) - 1;//求组后一位下标
//	while (left <= right)
//	{
//		//进行交换，然后打印
//		b[left] = a[left];
//		b[right] = a[right];
//		left++;
//		right--;
//		printf("%s\n", b);
//	}
//	
//	return 0;
//}
//下面进行改进一下，让它看起来是动态过程
//#include<string.h>
//#include<windows.h>
//#include<stdlib.h>
//int main()
//{
//	char a[] = { "hello bite" };
//	char b[] = { "##########" };
//	int left = 0;
//	int right = strlen(a) - 1;//求组后一位下标
//	while (left <= right)
//	{
//		printf("%s",b);
//		//进行交换，然后打印
//		b[left] = a[left];
//		b[right] = a[right];
//		left++;
//		right--;
//	    Sleep(1000);//展示慢慢变化的过程，注意Sleep的头文件
//		system("cls");//清理屏幕的，让其更加形象
//	}
//	printf("%s\n", b);
//	return 0;
//}
//⼆分查找,
//int main()
//{
//	int a[] = {1,2,3,4,5,6,7,8,9,10 };
//	int n = 0;
//	scanf("%d", &n);//输入要找的数字下标
//	int left = 0;
//	int right = sizeof(a)/sizeof(a[0])-1;//求出最后一位数下标
//	int find = 0;
//	while (left <= right)
//	{
//		int mid = left + (right - left) / 2;
//		if ( a[mid]<n)
//		{
//			left = mid + 1;
//		}
//		else if (a[mid]>n)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			printf("找到了，下标是%d\n", mid);
//			find = 1;
//			break;
//		}
//	}
//	if (find==0)
//	{
//		printf("找不到\n");
//	}
//	return 0;
//}
//打印这个图案
//*   *
// * *
//  *
// * *
//*   *
//很容易看出这是对角线上的*符合二维数组下标，用这个思维直接简单
//int main()
//{
//	int i = 0;
//	int j = 0;
//	int n = 0;
//	while (scanf("%d",&n)!=EOF)
//	{
//		for (i = 0;i < n;i++)
//		{
//			for (j = 0;j < n;j++)
//			{
//				if (i == j || i + j == n - 1)//主对角线相等，副对角线i+j=行号-1
//				{
//					printf("*");
//				}
//				else
//				{
//					printf(" ");
//				}
//			}
//			printf("\n");
//		}
//	}
//	printf("\n");
//	return 0;
//}
//打印“*”组成的“空心”正方形图案。
//
//* * * *
//*     * 
//*     *
//* * * *
//还是用二维数组的思想来写
//int main()
//{
//    int n = 0;
//    int i = 0;
//    int j = 0;
//    while (scanf("%d", &n) != EOF)
//    {
//        for (i = 0;i < n;i++)
//        {
//            for (j = 0;j < n;j++)
//            {
//                if (i == 0 || j == 0 || i == n - 1 || j == n - 1)
//                {
//                    printf("* ");//不加空格这样的话会使，打印出来的是举行
//                }
//                else
//                {
//                    printf("  ");
//                }
//            }
//            printf("\n");
//        }
//    }
//    printf("\n");
//    return 0;
//}
//转置数组，输入一个n行m列的数组，转化为m行n列的数组
//int main() {
//    int m = 0;
//    int n = 0;
//    int i = 0;
//    int j = 0;
//    int a[10][10] = { 0 };
//    int b[10][10] = { 0 };
//    scanf("%d %d", &n, &m);
//    for (i = 0;i < n;i++)
//    {
//        for (j = 0;j < m;j++)
//        {
//            scanf("%d", &a[i][j]);
//            b[j][i] = a[i][j];
//            printf("%d ",a[i][j]);
//        }
//        printf("\n");
//    }
//    printf("\n");
//    for (i = 0;i < m;i++)
//    {
//        for (j = 0;j < n;j++)
//        {
//            printf("%d ", b[i][j]);
//        }
//        printf("\n");
//    }
//    return 0;
//}
//输入10个整数，要求按输入时的逆序把这10个数打印出来。
// 逆序输出，就是按照输入相反的顺序打印这10个数。
//输入1 2 3 4 5 6 7 8 9 10
//输出10 9 8 7 6 5 4 3 2 1
//int main()
//{
//	int a[10] = { 0 };
//	int i = 0;
//	for (i = 0;i < 10;i++)
//	{
//		scanf("%d", &a[i]);
//	}
//	int left = 0;
//	int right = sizeof(a) / sizeof(a[0]) - 1;
//	while (left <= right)
//	{
//		int temp = a[left];
//		a[left] = a[right];
//		a[right] = temp;
//		left++;
//		right--;
//	}
//	for (i = 0;i < 10;i++)
//	{
//		printf("%d ", a[i]);
//	}
//	return 0;
//}